package com.example.demo.utils;

import java.util.concurrent.ConcurrentHashMap;

/*
 * 实现一个本地的文件版本缓存，每次更新需要对文件的版本加1
 * 这里只是一个参考，实际使用中，需要根据业务场景选择合适的缓存方案，可以使用redis等缓存，不能用本地缓存！！，否则服务重启会导致版本丢失
 */
public class FileVersionCache {
    private ConcurrentHashMap<String, Long> cache = new ConcurrentHashMap<>();

    public void put(String fileId, Long version) {
        String key = generateKey(fileId);
        cache.put(key, version);
    }

    public Long get(String fileId) {
        String key = generateKey(fileId);
        Long cacheValue = cache.get(key);
        if (cacheValue == null) {
            return 1L;
        }
        return cacheValue;
    }

    public void remove(String fileId) {
        String key = generateKey(fileId);
        cache.remove(key);
    }

    private String generateKey(String fileId) {
        return "file_version_cache_" + fileId;
    }

    private static FileVersionCache instance = new FileVersionCache();

    public static FileVersionCache getInstance() {
        return instance;
    }
}
